package com.ryder.petmatediarybackend.module.pet.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ryder.petmatediarybackend.module.auth.dto.RegisterDTO;
import com.ryder.petmatediarybackend.module.auth.vo.UserVO;
import com.ryder.petmatediarybackend.module.pet.entity.SysUser;
import com.ryder.petmatediarybackend.module.user.dto.ChangePasswordDTO;
import com.ryder.petmatediarybackend.module.user.dto.UpdateProfileDTO;
import com.ryder.petmatediarybackend.module.user.vo.UserProfileVO;

/**
 * 描述: 系统用户表(SysUser)表服务接口
 * 
 * @author Ryder
 * @version 1.0
 * @since 1.0
 * 更新日期: 2025-10-31 08:00:00
 */
public interface SysUserService extends IService<SysUser> {

    /**
     * 根据用户名查询用户
     */
    SysUser getUserByUsername(String username);

    /**
     * 检查用户名是否存在
     */
    boolean existsByUsername(String username);

    /**
     * 创建用户并绑定默认角色（宠物主人）
     */
    UserVO createUser(RegisterDTO dto);

    /**
     * 获取用户详细信息（包含扩展信息、角色、统计数据）
     */
    UserProfileVO getUserProfile(Long userId);

    /**
     * 更新用户信息（基本信息+扩展信息）
     */
    void updateUserProfile(Long userId, UpdateProfileDTO dto);

    /**
     * 更新用户头像
     */
    void updateAvatar(Long userId, String avatarUrl);

    /**
     * 修改密码
     */
    void changePassword(Long userId, ChangePasswordDTO dto);
}
